#include <string.h>
#include <stdio.h>
#include "str.h"
#include "../global.h"

//获取字符串长度
unsigned int StrLenght(const char *src){
    unsigned int lenght=0;
    if (src == NULL)
    {
        return lenght;
    }
    while (*(src++) != '\0')
    {
        lenght++;
    }
    return lenght;
    
}

//字符截取
/*
dst:分割后的字符
src:被分割的字符
key:用于分割字符
*/
int StrSplit(char *dst,char *src,const char key){
    int num=0;
    int str_lenght=0;
    if (dst == NULL || src==NULL)
    {
        return ERROR;
    }
    str_lenght = StrLenght(src);
    while (str_lenght > num)
    {
        if ((*src) == key)
        {
            break;
        }
        *(dst++) = *(src++);
        num++;
    }
    return num;
}
//字符串比较
int StrCmp(const char *dst,const char *src){
    int dst_length=0;
    int src_length=0;
    int index=0;
    if (dst == NULL || src == NULL)
    {
        return ERROR;
    }
    src_length=StrLenght(src);
    dst_length=StrLenght(dst);
    while (src_length > index || dst_length > index)
    {
        if (*(dst++) != *(src++))
        {
            return UNEQUAL;
        }
        index++;
    }
    if (index==src_length && index == dst_length)
    {
        return EQUAL;
    }
    return UNEQUAL;
}

//字符串拷贝
/*
dst:拷贝后的字符
src:被拷贝的字符
*/
int StrCopy(char *dst,const char *src){
    if (dst == NULL || src==NULL)
    {
        return ERROR;
    }
    while (*src != '\0')
    {
        *(dst++)=*(src++);
    }
    return SUCCESS;
}

//字符转数字
int StrToNum(char *src,int *value){
    *value = 0;
    int zf = 1;
    if (src==NULL)
    {
        return ERROR;
    }
    int length = StrLenght(src);
    //判断正负
    if (*src == '-')
    {
        zf = -1;
        length -=1;
    }
    
    while ((*src) != '\0'|| length > 0)
    {
        if (*src < 48 || *src > 57)
        {
            return ERROR;
        }
        int Zero=1;
        int num=length-1;
        for(;num>0;num--){
            Zero *=10;
        }
        *value  += ((*src++)-48)*Zero;
        length--;
    }
    *value *= zf;
    return SUCCESS;
}